package cn.itcast.nems.journal.service;

import cn.itcast.ic.common.bean.Page;
import cn.itcast.nems.common.BasePageRequest;
import cn.itcast.nems.studentrecord.bo.EditSuspendJournalParams;
import cn.itcast.nems.studentrecord.bo.SuspendClazzParams;
import cn.itcast.nems.studentrecord.bo.SuspendJournalQuery;
import cn.itcast.nems.studentrecord.dao.condition.SuspendStudentQuery;
import cn.itcast.nems.studentrecord.dto.SuspendJournalVo;
import cn.itcast.nems.studentrecord.dto.SuspendStudent;
import cn.itcast.nems.studentrecord.dto.SuspendedClazz;

/**
 * 休学转班相关服务
 */
public interface JournalTransferSuspendedService {

    /**
     * 根据班级找到对应休学班级
     *
     * @param params { 班级id }
     * @return 休学班级
     */
    SuspendedClazz suspendedClazz(SuspendClazzParams params);

    /**
     * 休学转班预览, 学生剩余多少钱 eg. ，但是没有保存草稿和提交，只是展示使用
     *
     * @param params { 班级和休学信息 }
     * @return 休学转班记录 (无id)
     */
    SuspendJournalVo suspendPreview(EditSuspendJournalParams params);

    /**
     * 创建或修改一个休学转班记录
     *
     * @param params { 班级和休学信息 }
     * @return 休学转班记录
     */
    SuspendJournalVo editSuspendJournal(EditSuspendJournalParams params);

    /**
     * 休学转班详情
     *
     * @param id 休学转班记录id
     * @return 休学转班记录
     */
    SuspendJournalVo info(String id);

    /**
     * 分页查询休学转班记录
     *
     * @param queryParam 分页查询参数
     * @return 分页结果
     */
    Page<SuspendJournalVo> pageList(BasePageRequest<SuspendJournalQuery> queryParam);


    /**
     * 根据班级分页查询休学学生
     *
     * @param queryParam 分页查询参数
     * @return 分页结果
     */
    Page<SuspendStudent> studentPageList(BasePageRequest<SuspendStudentQuery> queryParam);

}
